<?php

namespace app\generator;

class CuteNicknameGenerator
{
    // 中文名字前缀（优雅、温柔系）
    private static $chinesePrefixes = [
        '熙', '婷', '柔', '雅', '静', '婉', '淑', '惠', '丽', '娇',
        '雨', '雪', '月', '星', '花', '梦', '幻', '紫', '蓝', '白',
        '墨', '诗', '画', '琴', '棋', '书', '文', '乐', '爱', '心',
        '灵', '巧', '甜', '蜜', '安', '宁', '丁', '晓', '晨', '露'
    ];

    // 中文名字后缀（优雅系）
    private static $chineseSuffixes = [
        '柔', '玉', '婷', '娜', '琪', '琳', '瑶', '莹', '洁', '怡',
        '芸', '萱', '薇', '蕊', '婕', '姗', '彤', '晴', '雯', '霏',
        '璇', '玥', '珂', '珺', '琦', '瑾', '琪', '瑄', '妍', '嫣',
        '韵', '雅', '馨', '慧', '敏', '棋', '书', '画', '乐', '文'
    ];

    // 称呼后缀
    private static $titleSuffixes = [
        '小仙女', '小姐姐', '小公主', '小可爱', '小甜心', '小宝贝',
        '少爷', '公子', '大人', '先生', '小姐', '同学',
        '酱', '喵', '呜', 'mio', 'nya', 'chan', 'sama', 'kun'
    ];

    // 日文/英文混合后缀
    private static $mixedSuffixes = [
        'mio', 'riko', 'hina', 'yuki', 'sakura', 'nana',
        'aya', 'kiki', 'luna', 'star', 'moon', 'sky',
        'rain', 'snow', 'light', 'dark', 'angel', 'demon'
    ];

    // 生成随机网名
    public static function generate($style = 'default') {
        switch ($style) {
            case 'chinese':
                return self::generateChinese();
            case 'mixed':
                return self::generateMixed();
            case 'title':
                return self::generateWithTitle();
            default:
                // 随机选择一种风格
                $styles = ['chinese', 'mixed', 'title'];
                return self::generate($styles[array_rand($styles)]);
        }
    }

    // 纯中文风格：前缀+后缀
    private static function generateChinese() {
        $prefix = self::$chinesePrefixes[array_rand(self::$chinesePrefixes)];
        $suffix = self::$chineseSuffixes[array_rand(self::$chineseSuffixes)];

        // 50%概率加一个字
        if (mt_rand(0, 100) > 50) {
            $middle = self::$chineseSuffixes[array_rand(self::$chineseSuffixes)];
            return $prefix . $middle;
        }

        return $prefix . $suffix;
    }

    // 中文+称呼后缀风格
    private static function generateWithTitle() {
        $name = self::generateChinese();
        $title = self::$titleSuffixes[array_rand(self::$titleSuffixes)];

        // 30%概率不加空格
        if (mt_rand(0, 100) > 70) {
            return $name . $title;
        }
        return $name . ' ' . $title;
    }

    // 中文+外文混合风格
    private static function generateMixed() {
        $name = self::generateChinese();
        $mixed = self::$mixedSuffixes[array_rand(self::$mixedSuffixes)];

        // 50%概率小写，50%概率首字母大写
        $mixed = (mt_rand(0, 100) > 50) ? strtolower($mixed) : ucfirst($mixed);

        // 随机决定是否加空格或符号
        $separators = ['', ' ', '_', '-', '~', '·'];
        $separator = $separators[array_rand($separators)];

        return $name . $separator . $mixed;
    }

    // 批量生成
    public static function generateMultiple($count = 5, $style = 'default') {
        $results = [];
        for ($i = 0; $i < $count; $i++) {
            $results[] = self::generate($style);
        }
        return $results;
    }

}